package com.qf.service.impl;

import com.qf.dao.CarDao;
import com.qf.dao.GoodDao;
import com.qf.dao.impl.CarDaoImpl;
import com.qf.dao.impl.GoodDaoImpl;
import com.qf.model.Car;
import com.qf.model.Goods;
import com.qf.service.CarService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public class CarServiceImpl  implements CarService {
    CarDao dao=new CarDaoImpl();
    GoodDao gdao=new GoodDaoImpl();
    @Override
    public int addCar(Map<String, Object> map) {
        // map.put("pid",Integer.parseInt(pid));
        //        map.put("price",new BigDecimal(price));
        //        map.put("uid",uid);
        Integer pid =(Integer) map.get("pid");
        Integer uid = (Integer)map.get("uid");
        BigDecimal price =(BigDecimal) map.get("price");
        //查看相同的人有没有添加过相同的商品
        Car c=dao.selectCarByUidAndPid(pid,uid);
        int a=0;
        //  map.put("pid",Integer.parseInt(pid));
        //        map.put("price",new BigDecimal(price));
        //        map.put("uid",uid);
        if(c==null){
            //如果没有，再去执行insert方法

            a= dao.insertCar(map);
        }else{
            //查看car表中有没有相同的pid和uid，如果有，执行update carDetail set cnum=cum+1,csum=csum+price where pid=? and uid=?
            map.put("car",c);
            a=dao.updateCarByPidAndUid(map);
        }

        return a;
    }

    @Override
    public List<Car> getAllCar(Integer id) {
        List<Car> list=dao.selectCarByUid(id);
        for (Car c:list){
            Goods good = gdao.selectGoodsById(c.getPid());
            c.setGood(good);
        }
        //我们还没有拿到商品信息
        return list;
    }

    @Override
    public int changeCarNum(int id, BigDecimal price, int cnum) {
        //update car set cnum=?,csum=? where id=?
        //判断num是否为0

        BigDecimal csum=price.multiply(new BigDecimal(cnum));
        int a=dao.updateCarById(id,cnum,csum);


        return a;
    }

    @Override
    public int changeDownCarNum(int id, BigDecimal price, int cnum, boolean isRemove) {
        int a=0;
        if(isRemove){
          a=dao.deleteCarById(id);
        }else{
            BigDecimal csum=price.multiply(new BigDecimal(cnum));
            a=dao.updateCarById(id,cnum,csum);
        }



        return a;
    }
}
